package com.woniuxy.controller;

import com.woniuxy.service.OcrService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
/**
 * OCR接口控制器：提供前端调用的HTTP接口
 */
@Slf4j
@RestController
@RequestMapping("/api/ocr") // 接口基础路径
@RequiredArgsConstructor
@CrossOrigin
public class OcrController {
    private final OcrService ocrService;

    /**
     * 图片文字提取接口（与前端请求地址完全匹配）
     * @param file 前端上传的图片文件（FormData格式，参数名"file"）
     * @return 标准JSON响应（包含success、message、data字段）
     */
    @PostMapping("/extract") // 完整接口路径：/api/ocr/extract
    public ResponseEntity<Map<String, Object>> extractText(@RequestParam("file") MultipartFile file) {
        log.debug("收到OCR请求，文件名: {}, 大小: {} bytes", file.getOriginalFilename(), file.getSize());
        Map<String, Object> response = new HashMap<>();

        try {
            // 调用服务层处理并获取结果
            String resultText = ocrService.extractTextFromImage(file);

            // 构建成功响应（与前端期望的格式一致）
            response.put("success", true);
            response.put("message", "文字识别成功");
            response.put("data", resultText); // 识别结果放在data字段
            return ResponseEntity.ok(response);

        } catch (Exception e) {
            // 构建失败响应（错误信息返回给前端）
            response.put("success", false);
            response.put("message", e.getMessage());
            response.put("data", null);
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response);
        }
    }
}